package com.example.demo2;

/**
 * 单例模式 - 懒汉式- 线程安全 添加了 synchronized关键字
 * 优点:使用synchronized 锁 锁住创建单例对象的方法,防止多个线程同时调用
 * 缺点: 因为对 getInstance() 方法加了锁,导致这个函数的并发度很低,如果使用的次数多的话
 */
public class SingletonDemo3 {

    private static SingletonDemo3 singletonDemo2;

    private SingletonDemo3() {

    }

    /**
     * synchronized 同步锁的方式  是 重量级锁
     * @return
     */
    public static synchronized SingletonDemo3 getInstance() {
        if (singletonDemo2 == null) {
            singletonDemo2 = new SingletonDemo3();
        }
        return singletonDemo2;
    }

}
